package com.jxin.mall.middle.util.redis;

import com.jxin.mall.middle.exception.RedisUtilException;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * 带事物的redis模板
 * mutilStrProtoRedisUtil 工具类
 * @author  蔡佳新
 * @version 1.0
 * @since   jdk 1.8
 */
@Component("mutilStrProtoRedisUtil")
public class MutilStrProtoRedisUtil extends StrProtoRedisUtil{
    @Resource(name = "multiProtobufRedisTemplate")
    private RedisTemplate<String, Object> redisTemplate;

    @Override
    public RedisTemplate<String, Object> getRedisTemplate() {
        return redisTemplate;
    }
    //------------------------------------------------Transaction-------------------------------------------------------

    /**
     * 开启redis事物
     * @author 蔡佳新
     */
    void begin() {
        // 开启事务
        getRedisTemplate().multi();
    }
    /**
     * 提交Redis事务
     * @author 蔡佳新
     */
    void exec() {
        // 成功提交事务
        getRedisTemplate().exec();
    }

    /**
     * 回滚Redis事务
     * @author 蔡佳新
     */
    void discard() {
        getRedisTemplate().discard();
    }
}
